package com.atde._01_principle.inversion;


/**
 * @Author: Del
 * @CreateTime: 2025-04-12
 * @Description: 违反依赖倒置演示
 * @Version: 1.0
 */
public class DependecyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        Email email = new Email();
        person.receive(email);
    }
}

// 创建一个Email类，模拟邮件
class Email {
    public String getInfo() {
        return "电子邮件信息：Hello,World";
    }
}

// 完成Person接收消息的功能

/**
 *  类的设计分析：
 *   问题1：类的成员变量和成员方法都直接使用了Email类
 *   问题2：如果我们获取的对象时 微信， 短信等等， 则新增类，同时Person也要增加相应的接收方法
 *   解决方案：引入一个抽象的接口IReceiver，表示接收者， 这样 Person类与接口发生依赖
 *   因为Email， WeiXin， 等等都是属于接收的范围，它他们各自实现IReceiver 接口就ok， 这样就符合依赖倒置原则
 */
class Person {
    public void receive(Email email) {
        System.out.println(email.getInfo());
    }
}
